stylecontext: Clear paths in gtk_render_foo()
authorMartin Stransky <stransky@redhat.com>
Fri, 26 Jul 2013 11:24:53 +0000 (13:24 +0200)
committerBenjamin Otte <otte@redhat.com>
Fri, 26 Jul 2013 11:33:40 +0000 (13:33 +0200)
This ensures that existing paths are properly cleared and don't cause
spurious renderings.

https://bugzilla.gnome.org/show_bug.cgi?id=694086

gtk/gtkstylecontext.c

index 5f8b8ff1b853c25420ccb84b44c16eac9f1cc6f2..93c5ef55aafbc3897ef0c3f08b2c5760322646cd 100644 (file)
@@ -3801,6 +3801,7 @@ gtk_render_check (GtkStyleContext *context,
   engine_class = GTK_THEMING_ENGINE_GET_CLASS (engine);
 
   cairo_save (cr);
+  cairo_new_path (cr);
 
 
   _gtk_theming_engine_set_context (engine, context);
@@ -3851,6 +3852,7 @@ gtk_render_option (GtkStyleContext *context,
   engine_class = GTK_THEMING_ENGINE_GET_CLASS (engine);
 
   cairo_save (cr);
+  cairo_new_path (cr);
 
   _gtk_theming_engine_set_context (engine, context);
   engine_class->render_option (engine, cr,
@@ -3898,6 +3900,7 @@ gtk_render_arrow (GtkStyleContext *context,
   engine_class = GTK_THEMING_ENGINE_GET_CLASS (engine);
 
   cairo_save (cr);
+  cairo_new_path (cr);
 
   gtk_style_context_save (context);
   gtk_style_context_add_class (context, GTK_STYLE_CLASS_ARROW);
@@ -3952,6 +3955,7 @@ gtk_render_background (GtkStyleContext *context,
   engine_class = GTK_THEMING_ENGINE_GET_CLASS (engine);
 
   cairo_save (cr);
+  cairo_new_path (cr);
 
   _gtk_theming_engine_set_context (engine, context);
   engine_class->render_background (engine, cr, x, y, width, height);
@@ -4003,6 +4007,7 @@ gtk_render_frame (GtkStyleContext *context,
   engine_class = GTK_THEMING_ENGINE_GET_CLASS (engine);
 
   cairo_save (cr);
+  cairo_new_path (cr);
 
   _gtk_theming_engine_set_context (engine, context);
   engine_class->render_frame (engine, cr, x, y, width, height);
@@ -4051,6 +4056,7 @@ gtk_render_expander (GtkStyleContext *context,
   engine_class = GTK_THEMING_ENGINE_GET_CLASS (engine);
 
   cairo_save (cr);
+  cairo_new_path (cr);
 
   _gtk_theming_engine_set_context (engine, context);
   engine_class->render_expander (engine, cr, x, y, width, height);
@@ -4096,6 +4102,7 @@ gtk_render_focus (GtkStyleContext *context,
   engine_class = GTK_THEMING_ENGINE_GET_CLASS (engine);
 
   cairo_save (cr);
+  cairo_new_path (cr);
 
   _gtk_theming_engine_set_context (engine, context);
   engine_class->render_focus (engine, cr, x, y, width, height);
@@ -4134,6 +4141,7 @@ gtk_render_layout (GtkStyleContext *context,
   engine_class = GTK_THEMING_ENGINE_GET_CLASS (engine);
 
   cairo_save (cr);
+  cairo_new_path (cr);
 
   pango_layout_get_extents (layout, &extents, NULL);
 
@@ -4174,6 +4182,7 @@ gtk_render_line (GtkStyleContext *context,
   engine_class = GTK_THEMING_ENGINE_GET_CLASS (engine);
 
   cairo_save (cr);
+  cairo_new_path (cr);
 
   _gtk_theming_engine_set_context (engine, context);
   engine_class->render_line (engine, cr, x0, y0, x1, y1);
@@ -4224,6 +4233,7 @@ gtk_render_slider (GtkStyleContext *context,
   engine_class = GTK_THEMING_ENGINE_GET_CLASS (engine);
 
   cairo_save (cr);
+  cairo_new_path (cr);
 
   _gtk_theming_engine_set_context (engine, context);
   engine_class->render_slider (engine, cr, x, y, width, height, orientation);
@@ -4287,6 +4297,7 @@ gtk_render_frame_gap (GtkStyleContext *context,
   engine_class = GTK_THEMING_ENGINE_GET_CLASS (engine);
 
   cairo_save (cr);
+  cairo_new_path (cr);
 
   _gtk_theming_engine_set_context (engine, context);
   engine_class->render_frame_gap (engine, cr,
@@ -4339,6 +4350,7 @@ gtk_render_extension (GtkStyleContext *context,
   engine_class = GTK_THEMING_ENGINE_GET_CLASS (engine);
 
   cairo_save (cr);
+  cairo_new_path (cr);
 
   _gtk_theming_engine_set_context (engine, context);
   engine_class->render_extension (engine, cr, x, y, width, height, gap_side);
@@ -4387,6 +4399,7 @@ gtk_render_handle (GtkStyleContext *context,
   engine_class = GTK_THEMING_ENGINE_GET_CLASS (engine);
 
   cairo_save (cr);
+  cairo_new_path (cr);
 
   _gtk_theming_engine_set_context (engine, context);
   engine_class->render_handle (engine, cr, x, y, width, height);
@@ -4430,6 +4443,7 @@ gtk_render_activity (GtkStyleContext *context,
   engine_class = GTK_THEMING_ENGINE_GET_CLASS (engine);
 
   cairo_save (cr);
+  cairo_new_path (cr);
 
   _gtk_theming_engine_set_context (engine, context);
   engine_class->render_activity (engine, cr, x, y, width, height);
@@ -4501,6 +4515,7 @@ gtk_render_icon (GtkStyleContext *context,
   engine_class = GTK_THEMING_ENGINE_GET_CLASS (engine);
 
   cairo_save (cr);
+  cairo_new_path (cr);
 
   _gtk_theming_engine_set_context (engine, context);
   engine_class->render_icon (engine, cr, pixbuf, x, y);
@@ -4537,6 +4552,7 @@ gtk_render_icon_surface (GtkStyleContext *context,
   engine_class = GTK_THEMING_ENGINE_GET_CLASS (engine);
 
   cairo_save (cr);
+  cairo_new_path (cr);
 
   _gtk_theming_engine_set_context (engine, context);
   engine_class->render_icon_surface (engine, cr, surface, x, y);
@@ -4562,6 +4578,7 @@ draw_insertion_cursor (GtkStyleContext *context,
   gint offset;
 
   cairo_save (cr);
+  cairo_new_path (cr);
 
   _gtk_style_context_get_cursor_color (context, &primary_color, &secondary_color);
   gdk_cairo_set_source_rgba (cr, is_primary ? &primary_color : &secondary_color);